#!/usr/bin/env node
import path from "path";
import { program } from "commander";
import { XlsxBuilder } from "./XlsxBuilder";
export * from "./XlsxBuilder";

program.requiredOption("-i <xlsx目录>", "xlsx目录")
    .option("-do <数据导出目录>", "数据导出目录")
    .option("-co <代码导出目录>", "代码导出目录")
    .option("-t <导出类型>", "导出类型")
    .option("-dn <导出数据文件名>", "导出数据文件名(需要加后缀)")
    .option("-cn <导出代码文件名>", "导出代码文件名(不用加后缀)")
    .option("-cnp <导出代码命名空间>", "导出代码命名空间)")
    .option("-p <导出代码前缀>", "导出代码前缀)")
    .parse(process.argv);

let { i: inputDir, Do: dataOutputDir, Co: codeOutputDir, t: exportTy, Dn: dataName, Cn: codeName, cnp: codeNameSpace, p: prefix } = program.opts();

if (codeOutputDir || dataOutputDir) {
    inputDir = path.resolve(inputDir);
    console.log(`[xlsx目录]：${inputDir}`);
    if (dataOutputDir) {
        dataOutputDir = path.resolve(dataOutputDir);
        console.log(`[数据导出目录]：${dataOutputDir}`);
        console.log(`[数据文件名]：${dataName || "data.bin"}`);
    }
    if (codeOutputDir) {
        codeOutputDir = path.resolve(codeOutputDir);
        console.log(`[代码导出目录]：${codeOutputDir}`);
        console.log(`[代码文件名]：${dataName || "Xlsx"}.ts`);
        console.log(`[代码命名空间]：${dataName || "Xlsx"}`);
        console.log(`[代码前缀]：${prefix || "X"}`);
    }
    console.log(`[导出类型]：${exportTy || "全导"}`);
    console.log("========= 开始导表 =========");
    console.log("............................");
    new XlsxBuilder(inputDir, dataOutputDir, codeOutputDir, exportTy, dataName, codeName, codeNameSpace).build((time, size, count) => {
        console.log("............................");
        console.log("========= 导表完成 =========");
        console.log(`表格数量：${count}`);
        if (size) {
            if (size < 1024) {
                console.log(`数据大小：${size}b`);
            } else if (size < 1024 * 1024) {
                console.log(`数据大小：${Math.floor((size / 1024) * 100) / 100}kb`);
            } else {
                console.log(`数据大小：${Math.floor((size / 1024 / 1024) * 100) / 100}mb`);
            }
        }
        console.log(`总耗时：${time / 1000}s`);
    });
} else {
    console.log("-do <数据导出目录> -co <代码导出目录>");
}